const exp = require('express');
const md5 = require('md5')
const userModel = require('../db/models/userModel');
const { RES_CODE } = require('../utils/constants');
const { signToken,verifyToken } = require('../utils/tokenUtils');
const loginRouter = exp.Router();
const verify = require('../middlewares/verifyToken')

loginRouter.use(exp.json()); //{name:"laowang","age":18}
loginRouter.use(exp.urlencoded({ extended: false })) //name=laowang&age=18
// 登录接口
loginRouter.post('/login', async (req, res) => {
    // 获取到表单数据 -  
    let { username, pwd } = req.body;
    console.log(req.body);
    try {
        // 和数据库数据做对比，如果有匹配数据，说明登录成功，否则失败
        let user = await userModel.findOne({ username, pwd: md5(pwd) });
        // console.log(user);
        if (user) {
            // 创建token
            let token = signToken({ userid: user._id });
            // 登录成功
            res.json({
                code: RES_CODE.SUCCESS,
                msg: "登录请求成功",
                data: {
                    token,
                    user
                }
            })
        } else {
            // 登录失败
            res.json({
                code: RES_CODE.DATA_ERROR,
                msg: "登录请求失败",
            })
        }
    }catch(error){
        // 登录失败
        res.json({
            code: RES_CODE.SERVER_ERROR,
            msg: "服务器错误，请稍后再试",
        })
    }
})

// 登录用户信息
loginRouter.get('/info',verify,async (req,res)=>{
    // 通过用户id获取用户信息
    // 拿到用户id
    let userid = req.userid;
    try{
        // 数据库中查找对应数据
        let user =  await  userModel.findById(userid)
        res.json({
            code:RES_CODE.SUCCESS,
            msg:"获取信息成功",
            data:user
        })
    }catch(error){
        res.json({
            code: RES_CODE.SERVER_ERROR,
            msg: "服务器错误，请稍后再试",
        })
    }
})

// 退出登录接口
loginRouter.get('/logout',verify,(req,res)=>{
    res.json({
        code:RES_CODE.SUCCESS,
        msg:"退出登录成功"
    })
})

module.exports = loginRouter;